home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / a56 / examples / test_dac.a56 < prev    next >
Text File  |  1995-04-27  |  2KB  |  140 lines

  1. ; Various tests for output filter and DAC.  I used a Nippon Precision Circuits
  2. ; SM5813AP dual-channel 8-times oversampling digital filter into a Burr Brown
  3. ; PCM1700P dual-channel 18-bit DAC.  The code is very specific to my hardware.
  4. ;
  5. ; available signals:
  6. ;    impulse
  7. ;    square
  8. ;    triangle
  9. ;    sine        (uses twin-integrator harmonic oscillator)
  10. ;
  11. ; This code is not interrupt driven but simple spins waiting for transmitter
  12. ; ready on each sample.
  13. ;
  14. ;
  15. ; written by Quinn Jensen
  16. ; home: jensenq@qcj.icon.com
  17. ;
  18. include    "ioequ.inc"
  19.  
  20.     org    p:$0000
  21.     jmp    <start
  22.  
  23.     org    p:$000C
  24. ;ssi    jsr    ssi_int                ;go handle SSI interrupt
  25.  
  26. ; data areas
  27.  
  28.     org    x:$0
  29. i_left    dc    0                ;left channel in
  30. i_right    dc    0                ;right channel in
  31.  
  32.     org    p:$40
  33. start
  34.  
  35. ; assign mode
  36.  
  37.     movec    #$0300,sr            ;go to IPL 3
  38.  
  39. ; set up interrupts
  40.  
  41. ;       movep    #0<<13|3<<12|0<<10,x:m_ipr    ;put SSI at lev 3, others off
  42.  
  43. ; set system sample rate
  44.  
  45.     bclr    #6,x:<<m_pbd            ;32.55 kHz
  46.     bset    #5,x:<<m_pbd            ;
  47.     bclr    #4,x:<<m_pbd            ;
  48.  
  49. ; set up SSI
  50.  
  51.     movep    #2<<13|1<<8,x:m_cra        ;16-bit word, 2 time slots
  52.     movep    #0<<15|3<<12|1<<11|1<<9,x:m_crb    ;sync,network,enable
  53.  
  54.     movep    #0,x:m_pcddr            ;port C is SSI/SCI
  55.     movep    #$1FF,x:m_pcc            ;port C is SSI/SCI
  56.  
  57. ; enable interrupts
  58.  
  59. ;       movec    #0,sr                ;lower IPL
  60.  
  61.     jmp    <impulse            ;jump to the desired signal
  62.  
  63. ; impulse
  64.  
  65. impulse
  66.     move    #>-.5,a
  67.  
  68. im1
  69.     do    #400,im0
  70.     jsr    <imp
  71. im0     
  72.     neg    a
  73.     jsr    <imp
  74.     neg    a
  75.     jmp    <im1
  76.  
  77. imp
  78.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  79.     movep    a,x:m_tx
  80.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  81.     movep    a,x:m_tx
  82.     rts
  83.  
  84. ; square wave
  85.  
  86. square
  87.     move    #>-.1,a
  88.  
  89. sq1
  90.     do    #200,sq0
  91.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  92.     movep    a,x:m_tx
  93.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  94.     movep    a,x:m_tx
  95. sq0     
  96.     neg    a
  97.     jmp    <sq1
  98.  
  99.  
  100. ; triangle wave
  101.  
  102. triangle
  103.     move    #>.010,x0
  104.     move    #>-.9,a
  105.  
  106. l0      
  107.     do    #90*2,l1
  108.     add    x0,a
  109.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  110.     movep    a,x:m_tx
  111.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  112.     movep    a,x:m_tx
  113. l1
  114.     move    x0,b
  115.     neg    b
  116.     move    b,x0
  117.     jmp    <l0
  118.  
  119.  
  120. ; sine wave
  121.  
  122. sine
  123.     move    #>.050,x0            ;oscillator freq
  124.     move    #>-.209,a            ;initial conditions
  125.     move    #>.2090,b            ;
  126.  
  127. loop
  128.     mac    x0,y0,a
  129.     move    a,y0
  130.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  131.     movep    a,x:m_tx        
  132.     mac    -x0,y0,b
  133.     move    b,y0
  134.     jclr    #6,x:m_sr,*            ;wait for transmitter ready
  135.     movep    b,x:m_tx        
  136.  
  137.     jmp    <loop
  138.  
  139.     end
  140.